#ifndef SIMPLE_IO_EVENT_H
#define SIMPLE_IO_EVENT_H

#include <set>
#include <map>
#include "handler_base.h"

namespace simple {
    class Event {
    public:
        /**
        * 获取处理器映射
        */
        static const std::map<std::string, std::vector<std::shared_ptr<HandlerBase>>> &getHandlers();

        /**
         * 重置处理器映射表
         */
        static void resetHandlers();

        /**
         * 注册处理器
         */
        static bool registerHandler(const std::shared_ptr<HandlerBase> &);

        /**
         * 注销处理器
         */
        static bool unRegisterHandler(const std::shared_ptr<HandlerBase> &);

        /**
         * 发布事件
         */
        static bool publishEvent(const std::string &, Session *const);
    };
}

#endif //SIMPLE_IO_EVENT_H
